/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package probando;




/**
 *
 * @author VWV
 */
public class Contador implements Runnable{
    private String nombre = "generico";
    private int repeticiones = 10;
    private int tiempoEspera = 2000;
    private boolean control = true;
    private UiPrincipal view = null;
    private boolean consola = true;
    
    public Contador(UiPrincipal view, String nombre, boolean consola){
        this(nombre);
        this.view = view;
        this.consola = consola;
    }
    
    public Contador(UiPrincipal view, boolean consola){
        this.view = view;
        this.consola = consola;
    }

    public Contador(UiPrincipal view,String nombre, int repeteciones, int tiempoEspera, boolean consola) {
        this(nombre,repeteciones,tiempoEspera);
        this.view =view;
        this.consola = consola;
    }
    
    public Contador(String nombre, int repeteciones, int tiempoEspera) {
        this(nombre);
        this.repeticiones = repeteciones;
        this.tiempoEspera = tiempoEspera;
    }
    
    public Contador(String nombre){
        this.nombre = nombre;
    }

    public Contador(){
    }

    public void run() {
        for (int i = 0; (i < getRepeticiones()) && control; i++) {

            if (!consola) 
                view.agregarAlOutput(nombre + ": " + (i+1));
            else 
                System.out.println(nombre + ": " + (i+1));
            
            try {
                Thread.sleep(tiempoEspera);
            } catch (InterruptedException ex) {
                //se interrumpio su suspension
            }     
        }
    }

    public void kill(){
        control = false;
    }

    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * @return the repeticiones
     */
    public int getRepeticiones() {
        return repeticiones;
    }

    /**
     * @return the tiempoEspera
     */
    public int getTiempoEspera() {
        return tiempoEspera;
    }

}
